ROC(Receiver Operating Characteristic Curve)

ROC 커브(Receiver Operating Characteristic Curve)
ROC 커브는 분류 분석 모형의 평가를 쉽게 비교할 수 있도록 시각화한 그래프이다.
x축은 FPR(1-특이도) 값을, y축은 TPR(민감도)를 갖는 그래프로 이진 분류 모형의 성능을 평가하기 위해 사용된다.

ROC 커브의 아래 면적을 나타내는 AUROC(Area Under ROC)의 값이 1에 가까울수록 모형의 성능이 우수하며,
0.5에 가까울수록 무작위로 예측하는 랜덤 모델에 가깝다.
install.packages(‘rpart’)
install.packages(‘Epi’)

> iris_bin1<-subset(iris, Species=='setosa'|Species=='versicolor’)


#setosa를 1로, setosa가 아닌 경우(versicolor)를 0으로 변경

> iris_bin1$Species<-ifelse(iris_bin1$Species=='setosa', 1, 0)


# iris_bin1에서 Sepal.Length와 Sepal.Width를 변수로 사용

> iris_bin1<-iris_bin1[, c(1, 2, 5)]

> index<-sample(2, nrow(iris_bin1), replace=T, prob=c(0.7, 0.3))

> train<-iris_bin1[index==1, ]

> test<-iris_bin1[index==2, ]


# 의사결정나무를 활용하여 ROC 커브 작성

> library(rpart)

> result<-rpart(Species~., data=train)


> pred<-predict(result, newdata=test)

> head(pred)

 3  4  5  8 17 23 

 1  1  1  1  1  1 

> test$pred<-pred

> head(test, 3)

  Sepal.Length Sepal.Width Species pred

3          4.7         3.2       1    1

4          4.6         3.1       1    1

5          5.0         3.6       1    1


> library(Epi)

> ROC(form=Species~pred, data=test, plot='ROC')

AUROC는 0.992로 좋은 모형이라고 가정할 수 있다.